package com.xc.utils;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.Map;

/*
    jwt工具类
    写入配置文件，防止修改需要重新编译
 */
/*
    载体存的东西是每次都不一样，需要自己传输，
    过期时间自己设置，统一格式，毫秒值
    算法，密钥一般项目就一个，不然一直来回换

 */
@Component
@Data
@ConfigurationProperties(prefix = "jwt")
public class MyJwtUtils {
    private String key;

    private String suanFa;

    //生成jwt的方法，前端需要返回一个jwt
    public String creatJWT(Map<String, Object> map, long exp) {
        String token = Jwts.builder().setClaims(map).signWith(SignatureAlgorithm.valueOf(suanFa), key).setExpiration(new Date(System.currentTimeMillis() + exp)).compact();
        return token;
    }

    //解析JWT
    //parse  解析，分析
    public Map<String, Object> parseToken(String token) {
        return Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();
    }

}
